In [1]:
from db import Table
import plotly.graph_objects as go 
from plotly.subplots import make_subplots

from timeit import timeit
from random import randint

Предматная область выбирается пользователем

In [2]:
records_num = range(1, 10000)
times_insert = []  
times_select = []
times_drop = []
t = Table(['P1'], ['C1', 'C2', 'C3'])
setup_insert = """
from db import Table
from __main__ import t


def measure(i):
    t.add_record({
        'P1': i,
    },
        {
        'C1': i,
        'C2': i+1,
        'C3': i+2
    })

"""

setup_select = """
from __main__ import t
from random import randint, choice

fields = t.table_primaries + t.table_commons

def measure():
    key = choice(fields)
    value = randint(1, 15000)
    t.find_record(key, value)
"""

setup_drop = """
from __main__ import t
from random import randint, choice

fields = t.table_primaries + t.table_commons

def measure():
    key = choice(fields)
    value = randint(1, 10000)
    t.drop(key, value)
"""

for i in records_num:
    time = timeit(stmt=f'measure({i})',setup=setup_insert, number=1)
    times_insert.append(time)
    
    
for i in records_num:
    time = timeit(stmt="measure()", setup=setup_select, number=1)
    times_select.append(time)

for i in records_num:
    time = timeit(stmt="measure()", setup=setup_drop, number=1)
    times_drop.append(time)
In [3]:
titles = ["INSERT", "SELECT", "DROP"]

fig = make_subplots(rows=3, cols=1, row_heights=[150]*3, row_titles=titles)

fig.add_trace(
    go.Scatter(x=list(records_num), y=times_insert),
    row=1, col=1
)

fig.add_trace(
    go.Scatter(x=list(records_num), y=times_select),
    row=2, col=1
)

fig.add_trace(
    go.Scatter(x=list(records_num), y=times_drop),
    row=3, col=1
)


fig.update_layout(
    title_text = "Dificult",
    height=2000, width=1000,
    
    xaxis = dict(
        title_text = "Number of records"
    ),
    yaxis = dict(
        title_text = "Time(microsec)"
    )
)

fig.show()